Technical Field
This invention relates to multi-processor systems, and more particularly to dynamic reconfiguration of software applications executing on a multi-processor system (MPS).
Description of the Related Art
An embedded system may be described as a computer system designed for specific functions, often with real-time computing constraints. Physically, embedded systems range from portable consumer electronic devices, such as video and/or audio devices, to large stationary installations such as traffic lights, factory controllers, and largely complex systems such as hybrid vehicles and avionics. Embedded systems may receive input signals and process the signals in real time to perform a specific real-time operation. Embedded systems may instead (or in addition) perform real time processing and generate an output signal.
The processing performed by an embedded system may be implemented in different ways. Some devices use field programmable gate arrays (FPGAs) or other programmable logic devices. FPGAs are a means of implementing complex systems without using a stored imperative software programming approach. Instead, these devices are configured using a hardware description language, such as VHDL or Verilog, which enables the user to describe an interconnected set of electrical components. The FPGA realizes this interconnected design by programming fuses or setting configuration memory locations when the chip is being initialized.
An embedded system may also be implemented with one or more processors or digital signal processing (DSP) engines. For example, traditional coarse-grained programmable embedded systems may have a small number of processors or DSP engines, such as two or four processor cores as well as fixed or programmable application-specific logical functions. These systems usually have large data and instruction memories or utilize virtual memory schemes to extend the range of data and instruction memories that can be addressed.
In some cases it may be desirable to re-program an embedded system at run-time, e.g., where the re-programming occurs without stopping the system. However, both FPGA-based and traditional processor-based embedded systems have drawbacks that make such re-programming problematic. For example, although some FPGA devices may have limited capabilities for reconfiguring a specific physical region of the FPGA during run-time, it is generally difficult to dynamically re-program an FPGA to perform a different application at run-time. For example, the FPGA re-configurability may not be on a logical (or application) basis, but on the basis of what part of the logical design is mapped to a particular physical part of the chip. Much effort could be expended to align the logical and physical mapping of a design on an FPGA, but it would likely cause the implementation to be very inefficient.
In traditional processor-based systems, processing power may be shared among different applications through the well-known technique of multitasking In this approach, two or more applications can run at the same time on the same processor in an interleaved fashion. The processor dynamically manages the state of multiple applications. However, this can incur a performance penalty and inject a non-deterministic time delay that may not be acceptable for a real-time embedded system.
It may thus be desirable to provide a real-time embedded system which offers an improved ability to perform re-programming of the system at run-time, e.g., by dynamically swapping applications without stopping the system from executing.